//
//  WYStatusListViewModel.swift
//  WYWeibo
//
//  Created by wangyi on 16/7/14.
//  Copyright © 2016年 wangyi. All rights reserved.
//

import UIKit

class WYStatusListViewModel: NSObject {
  

    //微博数据源
    lazy var statusList: [WYStatusViewModel] = [WYStatusViewModel]()
 
    func loadStatus(ispullUp: Bool, callBack: (isSuccess: Bool,message: String) -> ()) {
        
        //上拉加载默认值0
        var maxID: Int64 = 0
        var sinceID: Int64 = 0
        if ispullUp {
            //获取数组最后一个元素的微博 id
            maxID = statusList.last?.status?.id ?? 0
            //防止重复数据,对其元素的微博 id 减一
            if maxID > 0 {
            
                maxID -= 1
            }
            
        } else {
        
            sinceID = statusList.first?.status?.id ?? 0
        }
        
        var message = "没有加载到最新数据"
        WYNetWorkingTools.sharedTools.loadStatus(maxID, sinceID: sinceID) { (response, error) -> () in
            if error != nil {
                print(error)
                callBack(isSuccess: false, message: message)
                return
            }
            //  代码执行到此,是成功的回调
            
            guard let dic = response as? [String: AnyObject] else {
                print("不是一个正确的字典格式")
                callBack(isSuccess: false, message: message)
                return
            }
            
            //  代码执行到此字典格式正确
            
            guard let statusDicArray = dic["statuses"] as? [[String: AnyObject]] else {
                print("不是一个正确的字典格式")
                callBack(isSuccess: false,message: message)
                return
            }
            
            //  遍历数组完成字典转模型
            var tempArray = [WYStatusViewModel]()
            for statusDic in statusDicArray {
                
                let status = WYStatus(dic: statusDic)
                //  初始化ViewModel通过我们的微博模型
                let statusViewModel = WYStatusViewModel(status: status)
                tempArray.append(statusViewModel)
            }
            //  设置数据
            //  self.statusList = tempArray
            //  追加数组元素
//            self.statusList.appendContentsOf(tempArray)
            
            if ispullUp {
                //上啦加载跟多
                self.statusList.appendContentsOf(tempArray)
                
            } else {
                //下拉刷新 最新数据在前面
//                self.statusList = tempArray + self.statusList
                self.statusList.insertContentsOf(tempArray, at: 0)
            }
            //判断服务端数据是否大于 0 
            if tempArray.count > 0 {
            
                message = "加载了|(tempArray.count)条微博数据"
            }
            
            //  刷新数据
//            self.tableView.reloadData()
            callBack(isSuccess: true,message: message)
        }
    }
}
